package it.antonio.ilpizze.assertion.concrete;

import it.antonio.ilpizze.assertion.Assertion;
import it.antonio.ilpizze.assertion.Condition;

public class ObjectAssertion<T> extends Assertion<T> {
        
        public ObjectAssertion(T instance){
                super(instance);
        }
        
        @Override
        public ObjectAssertion<T> as(String description) {
                description(description);
                return this;
        }

        @Override
        public ObjectAssertion<T> doesNotSatisfy(Condition condition) {
                assertNotSatisfy(condition);
                return this;
        }

        @Override
        public ObjectAssertion<T> isEqualTo(T expected) {
                assertEqual(expected);
                return this;
        }

        @Override
        public ObjectAssertion<T> isNotEqualTo(T other) {
                assertNotEqual(other);
                return this;
        }

        @Override
        public ObjectAssertion<T> isNotNull() {
                assertNotNull();
                return this;
        }

        @Override
        public ObjectAssertion<T> isNotSameAs(T other) {
                assertIsNotSameAs(other);
                return this;
        }

        @Override
        public ObjectAssertion<T> isSameAs(T expected) {
                assertIsSameAs(expected);
                return this;
        }

        @Override
        public ObjectAssertion<T> satisfies(Condition condition) {
                assertSatisfy(condition);
                return this;
        }
        

}